package com.qqt.csr.ixport.entity;

import com.baomidou.mybatisplus.annotation.*;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;

/**
 * 批量导入任务
 * @author yang hao
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "批量导入任务")
@TableName(value = "csr_batch_import_task")
public class BatchImportTask implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
    * 主键
    */
    @Schema(description = "主键")
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private Long id;

    /**
    * 租户编号
    */
    @Schema(description = "租户编号")
    private String tenantId;
    /**
     * 任务名称
     */
    private String name;

    /**
    * 任务类型：SW 敏感词导入
    */
    @Schema(description = "任务类型：SW 敏感词导入")
    private String type;

    /**
    * 服务编码，任务消费服务对应编码
    */
    @Schema(description = "服务编码，任务消费服务对应编码")
    private String businessCode;

    /**
    * 任务状态：0 未开始；1 进行中；2 暂停；3 成功；4 失败；5 取消；6  回滚中；7 回滚成功；8 回滚失败
    */
    @Schema(description = "任务状态：0 未开始；1 进行中；2 暂停；3 成功；4 失败；5 取消；6  回滚中；7 回滚成功；8 回滚失败")
    private Integer status;

    /**
    * 失败原因
    */
    @Schema(description = "失败原因")
    private String failReason;

    /**
    * 重试次数配置
    */
    @Schema(description = "重试次数配置")
    private Integer retryTimesCfg;

    /**
    * 已重试次数
    */
    @Schema(description = "已重试次数")
    private Integer retryTimes;

    /**
    * 数据源下载地址
    */
    @Schema(description = "数据源下载地址")
    private String dataSourceDownUrl;

    /**
    * 总条数
    */
    @Schema(description = "总条数")
    private Integer dataTotal;

    /**
    * 已完成条数
    */
    @Schema(description = "已完成条数")
    private Integer successCount;

    /**
    * 创建人id
    */
    @Schema(description = "创建人id")
    private Long creatorId;

    /**
    * 创建时间
    */
    @Schema(description = "创建时间")
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private Date createTime;

    /**
    * 更新时间
    */
    @Schema(description = "更新时间")
    @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

}